home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / utils / file / managers / mc-3.2 / mc-3 / mc-3.2.1 / src / panel.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-17  |  6.0 KB  |  191 lines

  1. #ifndef __PANEL_H
  2. #define __PANEL_H
  3.  
  4. #include "dlg.h"
  5.  
  6. enum list_types {
  7.     list_full,            /* Name, size, perm/date */
  8.     list_brief,            /* Name */
  9.     list_long,            /* Like ls -l */
  10.     list_user            /* User defined */
  11. };
  12.  
  13. enum view_modes {
  14.     view_listing,        /* Directory listing */
  15.     view_info,            /* Information panel */
  16.     view_tree,            /* Tree view */
  17.     view_quick,            /* Quick view */
  18.     view_nothing        /* Undefined */
  19. };
  20.  
  21. enum panel_display_enum {
  22.     frame_full,            /* full screen frame */
  23.     frame_half            /* half screen frame */
  24. };
  25.  
  26. #define is_view_special(x) ((x == view_info) || (x == view_quick))
  27.  
  28. #define J_LEFT  0
  29. #define J_RIGHT 1
  30.  
  31. typedef struct {
  32.     int  field_len;
  33.     char *(*string_fn)(file_entry *, int len);
  34.     int  just_mode;
  35.     char *title;
  36. } format_e;
  37.  
  38. typedef struct {
  39.     Widget   widget;
  40.     dir_list dir;        /* Directory contents */
  41.     
  42.     int      list_type;        /* listing type (was view_type) */
  43.     int      active;        /* If panel is currently selected */
  44.     char     cwd [MC_MAXPATHLEN];/* Current Working Directory */
  45.     char     lwd [MC_MAXPATHLEN];/* Last Working Directory */
  46.     int      count;        /* Number of files in dir structure */
  47.     int      marked;        /* Count of marked files */
  48.     int      dirs_marked;    /* Count of marked directories */
  49.     long int total;        /* Bytes in marked files */
  50.     int      top_file;        /* The file showed on the top of the panel */
  51.     int      selected;        /* Index to the selected file */
  52.     int      reverse;        /* Show listing in reverse? */
  53.     int      case_sensitive;    /* Listing is case sensitive? */
  54.     int      split;        /* Split panel to allow two columns */
  55.     int      is_panelized;    /* Flag: special filelisting, can't reload */
  56.     int      frame_size;    /* half or full frame */
  57.     sortfn   *sort_type;    /* Sort type */
  58.     char     *filter;        /* File name filter */
  59.  
  60.     int      dirty;        /* Should we redisplay the panel? */
  61.     /* We should cleanup this */
  62.     char     *user_format;    /* User format */
  63.     int         user_mini_status;  /* Is mini_status_format used */
  64.     char    *mini_status_format;/* User format for mini status line */
  65.     format_e *format;        /* Display format */
  66.     int      fmt_count;        /* Number of formats */
  67.  
  68.     char     *panel_name;    /* The panel name */
  69.     struct   stat dir_stat;    /* Stat of current dir: used by execute () */
  70.  
  71.     char     *gc;
  72.     void     *font;
  73.     int         item_height;
  74.     int         total_width;
  75.     int         ascent;
  76.     int         descent;
  77.     
  78.     int      searching;
  79.     char     search_buffer [256];
  80.    
  81.     int      has_dir_sizes;    /* Set if directories have sizes = to du -s */
  82. } WPanel;
  83.  
  84. /* This macro extracts the number of available lines in a panel */
  85. #define llines(p) (p->widget.lines-3 - (show_mini_info ? 2 : 0))
  86.  
  87. WPanel *panel_new ();
  88. void panel_set_size (WPanel *panel, int x1, int y1, int x2, int y2);
  89. void paint_paint (WPanel *panel);
  90. void panel_refresh (WPanel *panel);
  91. void set_attr (int hilight, int marked);
  92. void Xtry_to_select (WPanel *panel, char *name);
  93.  
  94. extern int torben_fj_mode;
  95. extern int show_mini_info;
  96. extern int panel_scroll_pages;
  97.  
  98. #define selection(p) (&(p->dir.list [p->selected]))
  99.  
  100. extern int fast_reload;
  101.  
  102. extern int extra_info;
  103.  
  104. /*#define ITEMS(p) ((p)->view_type == view_brief ? (p)->lines *2 : (p)->lines)
  105. */
  106. /* The return value of panel_reload */
  107. #define CHANGED 1
  108.  
  109. #define PANEL_ISVIEW(p) (p->view_type == view_brief || \
  110.              p->view_type == view_full  || \
  111.              p->view_type == view_long  || \
  112.              p->view_type == view_user  || \
  113.              p->view_type == view_tree)
  114.  
  115. #define RP_ONLY_PAINT 0
  116. #define RP_SETPOS 1
  117.  
  118. void set_colors (WPanel *panel);
  119. void paint_panel (WPanel *panel);
  120. void format_file (char *dest, WPanel *panel, int file_index, int panel_width);
  121. void repaint_file (WPanel *panel, int file_index, int move);
  122. void display_mini_info (WPanel *panel);
  123. void panel_reload (WPanel *panel);
  124. void paint_dir (WPanel *panel);
  125. void show_dir (WPanel *panel);
  126.  
  127. /* NOTE: Have to be ifdefed for HAVE_X */
  128. void x_fill_panel (WPanel *panel);
  129.  
  130. void change_view (WPanel *panel, int view_type);
  131.  
  132. extern void paint_info_panel (WPanel *);
  133. extern void paint_quick_view_panel (WPanel *);
  134. void info_frame (WPanel *panel);
  135. extern WPanel *the_info_panel;
  136. void paint_frame (WPanel *panel);
  137. void panel_update_contents (WPanel *panel);
  138. void panel_update_cols (Widget *widget, int frame_size);
  139. void panel_update_format (WPanel *panel);
  140. format_e *parse_display_format (WPanel *panel, char *format, 
  141.                 char **error, int isstatus);
  142. char *panel_format (WPanel *panel);
  143. char *set_panel_format (WPanel *p, char *format);
  144.  
  145. extern WPanel *current_panel;
  146. extern WPanel *get_other_panel ();
  147.  
  148. #define other_panel get_other_panel(__LINE__)
  149.  
  150. extern WPanel *left_panel;
  151. extern WPanel *right_panel;
  152.  
  153. void try_to_select (WPanel *panel, char *name);
  154.  
  155. #define DEFAULT_USER_FORMAT "half type,name,|,size,|,perm"
  156.  
  157. /* This were in main: */
  158. void unmark_files (WPanel *panel);
  159. void select_item (WPanel *panel);
  160. int ITEMS (WPanel *p);
  161. void unselect_item (WPanel *panel);
  162.  
  163. extern Hook *select_file_hook;
  164.  
  165. char *string_file_type (file_entry *fe, int len);
  166. char *string_file_permission (file_entry *fe, int len);
  167. char *string_file_nlinks (file_entry *fe, int len);
  168. char *string_file_owner (file_entry *fe, int len);
  169. char *string_file_group (file_entry *fe, int len);
  170. char *string_file_size (file_entry *fe, int len);
  171. char *string_file_mtime (file_entry *fe, int len);
  172. char *string_file_atime (file_entry *fe, int len);
  173. char *string_file_ctime (file_entry *fe, int len);
  174. char *string_file_name (file_entry *fe, int len);
  175. char *string_space (file_entry *fe, int len);
  176. char *string_marked (file_entry *fe, int len);
  177. char *string_file_perm_octal (file_entry *fe, int len);
  178. char *string_inode (file_entry *fe, int len);
  179. char *string_file_ngid (file_entry *fe, int len);
  180. char *string_file_nuid (file_entry *fe, int len);
  181.  
  182. void file_mark (WPanel *panel, int index, int val);
  183. void do_file_mark (WPanel *panel, int index, int val);
  184.  
  185. /* NOTE: Have to be ifdefed for HAVE_X */
  186. void x_panel_select_item (WPanel *panel, int index, int val);
  187. void x_select_item (WPanel *panel);
  188. void x_unselect_item (WPanel *panel);
  189.  
  190. #endif    /* __PANEL_H */
  191.